Copyright(C) 1994,1995,1996,1997 Terumasa KODAKA , Takeshi KONO
■タイマ
解説 o PC-9800本体は、8253A相当のプログラマブル・タイマ・カウンタを内蔵
している。タイマBIOS(INT 1Ch)の提供するインターバルタイマのための
割り込みタイミング発生、RS-232Cのボーレートジェネレータなどに
使用している。
u 初期のPC-9800では、ディスクリートの8253Aが使用されていたが、現在は
他のペリフェラル回路とともにASIC内に取り込まれている。そのような
機種では、8253A上位互換のμPD71054相当の機能が使用できる。
u PC-98LT・HA,DB-P1ではV50内蔵TCU(Timer Control Unit)が使用される。V50
内蔵TCUはμPD71054相当。
o 8253Aは、独立に動作する3個のカウンタを内蔵している。各カウンタの
用途は以下の通り。
------------------+------------+------------+------------
機種 | カウンタ#0 | カウンタ#1 | カウンタ#2
------------------+------------+------------+------------
PC-9801初代・E・F・M | インターバルタイマ | メモリリフレッシュ | RS-232C
------------------+------------+------------+------------
PC-98LT・HA | インターバルタイマ | INT 0Ah | RS-232C
------------------+------------+------------+------------
DB-P1 | インターバルタイマ | INT 0Ah | 未使用
------------------+------------+------------+------------
その他の機種 | インターバルタイマ |BEEP音周波数| RS-232C
------------------+------------+------------+------------
* DB-P1のRS-232CポートはV50HL内蔵SCUを使用しており、PC-98LT・HAとは
互換性がない。
o 各カウンタへの入力クロックは、システムクロック周波数に依存する。
8253Aでは、カウンタ#0〜#2にそれぞれ独立のクロックを入力することが
できるが、PC-9800では全て同じ周波数が入力されている。
----------------+------------------------------
システムクロック|カウンタの入力クロック周波数
----------------+------------------------------
5M,10MHz系(*1) |1.9968MHz
8MHz系 (*2) |2.4576MHz
----------------+------------------------------
*1: 0000:0501h bit 7=0のとき
*2: 0000:0501h bit 7=1のとき
o タイマが使用するI/Oアドレスは以下の通り。
-----------+----+---+-------------------------------------------------
I/Oアドレス|幅 |R/W|内容
-----------+----+---+-------------------------------------------------
0071h,3FD9h|BYTE|R/W|カウンタ#0リード/ライト
0073h,3FDBh|BYTE|R/W|カウンタ#1リード/ライト
0075h,3FDDh|BYTE|R/W|カウンタ#2リード/ライト
0077h,3FDFh|BYTE| W |コマンドライト
-----------+----+---+-------------------------------------------------
* 3FDxhのアドレスは、PC-9801初代・E・F・M,ハイレゾモード,PC-98LT・HA,DB-P1
では使用しない。PC-9801U・VM2以降の機種で、カウンタ#1の用途がビープ音
周波数に変更されたとき設けられたもの。ビープ音周波数を変更するときに
は、I/O 3FDBh経由でアクセスするように推奨されている。PC-9801初代・E・
F・Mでメモリリフレッシュ周期が変更されてしまうことを防ぐためである。
I/O 0071h,3FD9h
名前 カウンタ#0リード/ライト
チップ 8253A相当
対象 全PC-9800シリーズ
機能
[READ/WRITE]
bit 7〜0: カウンタ#0を読み書きする
解説 o カウンタ#0を読み書きする。
o カウンタ#0は、インターバルタイマの外部割り込み(INT 08h)を発生させる
ために使用している。BIOSではモード3で使用している。
u PC-9801初代・E・F・M,PC-98LT・HA,DB-P1,ハイレゾモード以外では、
I/O 3FD9hにイメージが出ている。ただし、カウンタ#0にアクセスする場合
には、I/O 0071h経由でアクセスするべきである。
u インターバルタイマ使用時の割り込み発生周波数は以下の通り。
---------+------
機種 |周波数
---------+------
DB-P1以外|100Hz
DB-P1 | 50Hz
---------+------
u PC-98LT・HA,DB-P1では、タイマにV50(HL)内蔵TCU(Timer Control Unit)、
割り込みコントローラにV50(HL)内蔵ICU(Interrupt Control Unit)を使用
する。TCU,ICUのI/Oアドレスはノーマルモードと互換。
u PC-98HA,DB-P1の場合、実際に発生する外部割り込みはINT 10h。INT 10h
ハンドラ内でINT 08hが実行される。
関連 I/O 0077h
I/O 3FD9h■[PC-9801初代・E・F・M,LT・HA,ハイレゾ以外]
INT 08h
INT 1Ch - Function 02h,03h,04h,05h,06h
I/O 0073h,3FDBh
名前 カウンタ#1リード/ライト
チップ 8253A相当
対象 全PC-9800シリーズ
機能
[READ/WRITE]
bit 7〜0: カウンタ#1を読み書きする
解説 o カウンタ#1を読み書きする。
o PC-9801初代・E・F・Mでは、カウンタ#1をメモリリフレッシュレートの生成に
使用している。設定を変更してはならない。
o PC-9801初代・E・F・M,PC-98LT・HA,DB-P1以外では、内蔵ビープ音の周波数設定に
使用している。デフォルトの周波数は2kHz。モード3で使用している。
u PC-98LT・HA,DB-P1は、INT 0Ah割り込みの発生用に使用している。詳細は、
「UNDOCUMENTED 9801/9821 Vol.1」の「INT 0Ah(外部割り込み…LT・HA)」の
項参照。
o PC-9801初代・E・F・M,PC-98LT・HA,DB-P1,ハイレゾモード以外ではI/O 3FDBhに
イメージが出ている。ノーマルモードで内蔵ビープ音の周波数を設定する
場合は、I/O 3FDBhからアクセスすることが推奨されている。
u μPD71054搭載機種では、I/O 0035h bit 3でビープ音をOFFにしているとき
には、カウンタ#1への入力クロックが停止するようになっている。ノート機
での低消費電力化のためと考えられる。
関連 I/O 0035h bit 3
I/O 0077h
INT 0Ah(外部割り込み…LT・HA)■[PC-98LT・HA,DB-P1]
INT 1Ch - Function 06h■ハイレゾ
INT 18h - Function 24h■ハイレゾ
I/O 0075h,3FDDh
名前 カウンタ#2リード/ライト
チップ 8253A相当
対象 全PC-9800シリーズ(DB-P1を除く)
機能
[READ/WRITE]
bit 7〜0: カウンタ#2を読み書きする
解説 o カウンタ#2を読み書きする。
o カウンタ#2はRS-232Cのレート生成に使用している。通常、モード3で使用
する。
o 転送速度に対応するカウンタへの設定値は以下の通り。
--------+-----------------+-----------------+-----------------
転送速度| 同 期 式 | 調歩同期式 1/16 | 調歩同期式 1/64
(bps) | 5MHz系| 8MHz系| 5MHz系| 8MHz系| 5MHz系| 8MHz系
--------+--------+--------+--------+--------+--------+--------
19200 | 128 |使用不可| 8 |使用不可|使用不可|使用不可
9600 | 256 | 208| 16 | 13 |使用不可|使用不可
4800 | 512 | 416| 32 | 26 | 8 |使用不可
2400 | 1024 | 832| 64 | 52 | 16 | 13
1200 | 2048 | 1664| 128 | 104 | 32 | 26
600 | 4096 | 3328| 256 | 208 | 64 | 52
300 | 8192 | 6656| 512 | 416 | 128 | 104
150 | 16384 | 13312| 1024 | 832 | 256 | 208
75 | 32768 | 26624| 2048 | 1664 | 512 | 416
--------+--------+--------+--------+--------+--------+--------
u 19200bps対応機以外では、9600bpsまでが保証された転送速度である。
19200bps対応機かどうかの判別は、F8E8:0002h(ノーマル),
FFE8:0002h(ハイレゾ)を参照して行う。
u 実際には、19200bps対応機でなくてもこのI/Oポートを直接操作することに
より、9600bps以上の速度で通信することができる。
u PC-9801初代・E・F・M,PC-98LT・HA,DB-P1,ハイレゾモード以外では、
I/O 3FDDhにイメージが出ている。ただし、カウンタ#2にアクセスする場合
には、I/O 0075h経由でアクセスするべきである。
関連 I/O 0434h■[19200bps対応機]
I/O 0077h
F8E8:0002h bit 2■[ノーマル]
FFE8:0002h bit 2■[ハイレゾ]
INT 19h - Function 00h(BIOS)
I/O 0077h,3FDFh
名前 モード設定
チップ 8253A相当
対象 全PC-9800シリーズ
機能
[READ] なし
[WRITE] モード指定
bit 7,6: SC1,SC0 - セレクトカウンタ
11b= マルチプルラッチコマンド■[μPD71054搭載機種のみ]
10b= カウンタ#2
01b= カウンタ#1
00b= カウンタ#0
■[マルチプルラッチコマンド以外]
bit 5,4: RL1,RL0 - リード/ライト
11b= LSB,MSBの順にリード/ライト
10b= MSBのリード/ライト
01b= LSBのリード/ライト
00b= カウントラッチコマンド
bit 3〜1: M2〜M0 - モード
101b= モード5(ハードウェアトリガードストローブ) (*)
100b= モード4(ソフトウェアトリガードストローブ)
x11b= モード3(方形波ジェネレータ)
x10b= モード2(レートジェネレータ)
001b= モード1(ゲート端子リトリガラブル1ショット) (*)
000b= モード0(カウント終了時での割り込み)
(*) PC-9800では、8253AのGATE端子が不変(プルアップ状態)のため、
モード1,モード5は有効に利用できない。
bit 0: BCD
1= BCDカウント
0= バイナリカウント
■[マルチプルラッチコマンド時]
bit 5: COUNT#
1= カウンタをラッチしない
0= カウンタをラッチする
bit 4: STATUS#
1= ステータスをラッチしない
0= ステータスをラッチする
bit 3: CNT2
bit 2: CNT1
bit 1: CNT0
1= 選択する
0= 選択しない
bit 0: 未使用(常に0)
解説 o タイマのモード設定を行う。
o カウンタ#0〜#2をリード/ライトする前には、あらかじめモード設定を
行っておく必要がある。
u PC-9800では、8253AのGATE端子が不変(プルアップ状態)のため、モード1,
モード5は有効に利用できない。
u PC-9801初代・E・F・M,PC-98LT・HA,DB-P1,ハイレゾモード以外では、I/O 3FDFhに
イメージが出ている。
u μPD71054搭載機ではマルチプルラッチコマンドが使用できる。ただし、
μPD71054搭載機かどうかを判別する方法は用意されていない。
関連 I/O 0071h
I/O 0073h
I/O 0075h